Server-based computing allows a networked client device, remotely situated with respect to a server, to access computing resources on the server and control a particular “host” machine remotely from the client device. This type of interaction is commonly referred to as a “remote” session. For example, the client device may run desktop client software that uses a remote desktop protocol, such as Remote Desktop Protocol (RDP), Virtual Network Computing (VNC), or Personal Computer over Internet Protocol (PCoIP), to access a user's desktop running on a remote server. In remote sessions, the client device transmits user inputs, such as keyboard or mouse inputs, to the remote server. Then, the desktop client software receives an image of a graphical user interface (GUI) (in the form of image data) from the remote server. The GUI and the image data received by the desktop client software are generated by the operating system and applications running in the remote server. In some instances, the GUI and image data are generated by a virtual machine (VM) executing on the remote server and processing user inputs received from the client device.
Mobile devices have evolved to provide sophisticated computing platforms, complete with large display areas and touch sensitive surfaces, among other components. The computing power of these devices has steadily increased, allowing remote sessions to be initiated from the palm of one's hand. Further, such mobile devices allow users to establish remote desktop connections to VMs from different locations. For example, a user may initiate a remote desktop connection to a VM in one city and re-connect to the same VM from a different city. In such cases, the VM typically continues to run on the server on which the VM was initially provisioned. As used herein, provisioning is the process of creating and deploying a VM, including assigning and configuring resources, such as processors, memory, network, and disk storage, associated with the VM. The server on which the VM was initially provisioned may be far from the user's new location, thereby affecting the remote session experience, as network connectivity tends to be slower over longer distances.